Rstudio est l’Environnement de Développement Intégré très majoritairement employé par les utilisateurs du langage R.
Dans son layout par défaut, lorsqu’un script est ouvert, 4 containers permettent de monitorer les différents aspects d’un projet ou d’analyses.
Leur positionnement et leur présence peuvent être paramétrés dans les options avancées.
Dans chaque container, différents onglets permettent d’accéder aux fonctionnalités proposées.
Rédaction de scripts
Edition de scripts dans différents onglets, visualisation de leur structure
Possibilité d’ouverture de scripts dans différentes fenêtres
Compilation de scripts, génération de rapports, options personalisées suivant la nature du document
Console
Console R : exécution et affichage de la sortie des commandes
Terminal du système (monitorat de l’utilisation mémoire, git en ligne de commande, etc)
Mode bebug (breakpoints, navigation dans les appels de fonction)
Logs des compilations de Rmarkdown
Environnement
Liste des variables de l’environnement : aperçu des dataframes, listes, vecteurs…
Sauvegarde de l’environnement de travail
Connexion à une base de données
Historique des commandes exécutées
Interface pour git
Fichiers et apperçus graphiques
Navigateur de fichiers, setting du répertoire de travail
Affichage des graphiques générés par le code et de leur historique
Liste des packages installés et loadés dans la session courante
Documentation des packages installés
Aperçu de documents html
Beaucoup de paramètres sont accessibles à l’utilisateur dans les options globales de RStudio pour l’édition du code, l’apparence de l’interface, le lien avec le terminal ou git, la compilation de Rmarkdown…
Des raccourcis claviers existent pour la majorité des actions, la liste étant disposnible avec Alt+Shift+K ou Option+Shift+K. Des raccourcis personalisés peuvent être créés.
Travaillez sous le format “Projet” pour la gestion automatique des répertoires de travail, des environnements, etc
RStudio peut être agrémenté d’Addins, des extensions constituant des aides pour des tâches de programmation. Par exemple : un color picker, une interface pour ggplot2, une aide à la citation de références, des code organizers… Voici La liste des plus utilisés
User et abuser de l’autocomplétion lors de l’écriture de scripts (nom de fonctions, arguments de fonctions, variables…)
Obtenez de l’aide sur n’importe quelle fonction dans la console avec ?, par exemple ?ggplot.
Plusieurs sessions R indépendantes peuvent être lancées simultanément (travail en parallèle, ou dans différents projets)
RStudio s’intègre avec Git et le développement de packages avec des onglets spécifiques dans la composante en haut à droite
Une cheat-sheet très complète sur l’interface RStudio : https://raw.githubusercontent.com/rstudio/cheatsheets/master/rstudio-ide.pdf
La communauté des utilisateurs de R/RStudio est très active et développée : https://community.rstudio.com/ est un forum d’échange et d’aide aux développeurs. Des groupes comme RWeekly, SatRdays, effectuent des conférences régulièrement et communiquent sur les réseaux sociaux, sur les nouveautés liées à R.
Rmarkdown est une syntaxe permettant la rédaction de documents HTML, PDF, Word, de slides, parmi d’autres formats. Il est possible d’y inclure du code R et ses sorties, en les encapsulant dans un rapport en markdown structuré, accompagné de description et d’interprétations textuelles, de liens, d’images…
Ce format permet la communication de méthodes et de résultats de manière claire et commentée, particulièrement à des non spécialistes de l’informatique ou des statistiques.
La reproductibilité des analyses est garantie, car le code ayant généré les résultats montrés est présent, et peut être réexécuté par toute personne possédant le document.
L’édition de Rmarkdown se fait généralement sous RStudio, qui propose une interface de Notebook, permettant d’exécuter les chunks de code R souhaités, tout en rédigeant la partie textuelle en markdown.
Pour créer le document fini, on utilise le bouton Knit. Le logiciel knitr est alors utilisé pour créer un document markdown contenant le code et ses sorties, avec le reste du texte, puis le logiciel pandoc se charge de donner au document son format et apparence finale (html, pdf…).
Rmarkdown workflow.
---
title: "L'IDE RStudio et l'édition de documents Rmarkdown"
author: "Océane Cassan - oceane.cassan@cnrs.fr"
date: "08/31/2020"
output:
html_document:
theme: united
number_sections: true
highlight: breezedark
---include = FALSE ne fait pas apparaître le code ni les résultats dans le document fini. echo = FALSE montre les sorties du code mais pas le code lui même. fig.cap = "Ma figure" attribue la légende désirée à une figure générée par le chunk.Généralement, le premier chunk contient la fonction knitr::opts_chunk$set(echo = TRUE), qui peut être utilisée pour préciser des paramètres qui seront utilisés pour tous les chunks du document.
Toutes les options de chunks sont décrites dans la documentation de Rmarkdown.
La syntaxe de Rmarkdown dont vous allez avoir besoin par la suite est dans cette cheat sheet, vous pouvez garder ce document ouvert au cours du TP.
Maintenant, à vous de générer un rapport d’analyses.
Tout d’abord, nous aurons besoin de certains packages. Assurez-vous de leur installation avant de commencer. Pou cela, dans la console R, exécutez la commande suivante qui fera les installations des packages manquants uniquement :
packages <- c("ggplot2", "ggpubr", "gglm", "equatiomatic", "papeR", "knitr", "plotly")
install.packages(setdiff(packages, rownames(installed.packages()))) Informations sur les packages
ggplot2 : visualisation de données
ggpubr : extensions à ggplot pour des graphes prêts à la publication
equatiomatic : donne la formule d’un modèle de régression en formule latex
papeR : formate des résultats de summary de modèles de régression
gglm : graphes des résidus d’un modèle de régression
knitr : outils pour la compilation de documents Rmd
plotly : makes ggplot graphs interactive
Ouvrez RStudio et créez un nouveau projet (File/New Project…/New Directory). Choisissez un emplacement et créez votre projet. A la racine du projet, créez un folder “data”, dans lequel vous pouvez télécharger les données que nous allons utiliser aujourd’hui pour illustrer les fonctionnalités de Rmarkdown.
Créez un nouveau document Rmarkdown qui sera votre script de TP, via le menu File/New file/R Markdown (acceptez les éventuelles mises à jour). Laissez l’option HTML par défaut. Comme vous le constatez, RStudio propose déjà un petit template d’exemple fonctionnel de Rmarkdown. Vous pouvez le sauvegarder et le compiler avec le bouton knitr en haut de panel du script. Inspectez le résultat obtenu, ainsi que le code l’ayant généré.
Personnalisez si nécessaire le template dans l’entête YAML (auteur, titre, date…).
Le premier chunk de setup doit être conservé. Rajoutez-y l’import des packages que nous allons utiliser. Il doit donc maintenant contenir :
knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)
library(ggpubr)
library(equatiomatic)
library(papeR)
library(gglm)
library(plotly)Nous continuerons de le modifier plus tard dans l’énoncé. Exécutez ce chunk avec la petite flèche verte en haut à droite, ou avec Ctrl+Shift+Enter.
La suite du template peut être supprimée.
Au cours des étapes suivantes, utilisez régulièrement knitr pour compiler et visualiser le rendu du document. Vous pouvez également prendre l’habitude de copier le texte des questions de l’énoncé dans les parties markdown de votre rapport pour re-contextualiser le code contenu des chunks.
Créez une première section nommée “Contexte” (# Contexte) et rappelez l’objectif du document (vous familiariser avec Rmarkdown). Vous pouvez également parler des données que nous allons utiliser comme base de notre démonstration : Les données analysées sont issues d’un publication intitulée “Fluctuating, warm temperatures decrease the effect of a key floral repressor on flowering time in Arabidopsis thaliana” de 2015.
Dans ces données, plusieurs génotypes d’Arabidopsis thaliana, une plante modèle, ont été phénotypés (leurs caractéristiques morphologiques, leur réponse à l’environnement, ont été mesurés).
Dans le premier chunk de votre document ( Ctrl + Alt + I, ou sous OS X: Cmd + Option + I), vous pouvez loader le jeu de données ainsi :
data <- read.csv("data/burghardt_et_al_2015_expt1.csv")
dim(data)
head(data)La fonction dim donne les dimensions du dataframe, et head donne un perçu de ses premières lignes.
Exécutez un chunk avec la petite flèche verte en haut à droite, ou avec Ctrl+Shift+Enter. Après exécution, un objet data est apparu dans votre environnement RStudio. Vous pouvez l’inspecter avec la commande View(data) dans la console.
paged des dataframesPour améliorer le rendu dans dataframes comme en sortie de head, on va utiliser l’option d’affiche suivante dans la partie YAML comme dans cet exemple :
---
title: "Visualisation et analyse de données de biologie végétale"
output:
html_document:
df_print: paged
---Ajoutez l’option et re-compilez.
Créez une section Visualisation.
Créez ensuite une sous-section ## Simple visualisation.
Nous allons ici représenter le nombre de jours jusqu’à floraison pour les différents génotypes, durée de jours (qui peuvent être contrôlés dans des chambres artificielles), et la température de culture. Voici le code à utiliser pour réaliser le graphique, utilisant la librairie ggplot2 :
data$temperature <- factor(data$temperature)
data$day.length = factor(data$day.length)
ggplot(data, aes(x = factor(temperature),
y = days.to.flower,
color = genotype )) +
geom_jitter(color = "black")+
geom_boxplot(aes(fill = genotype), alpha = 0.3, size = 1) +
facet_grid(day.length~genotype) +
xlab("Temperature")Exécutez le chunk, et compilez le document avec knitr.
L’image est de taille assez petite. De manière globale à tout le document, demandez des images de hauteur 8 et de largeur 12. Pour cela, ajoutez des paramètres fig.width et fig.height à knitr::opts_chunk$set(echo = TRUE) dans le premier chunk.
Recompliez le document pour vérifier que le changement de taille a bien eu lieu.
On constate qu’une température plus élevée aura tendance à diminuer le temps nécessaire à la floraison. Il s’agit ici de reproduire le même graphe mais en se demandant si les durées jusqu’à floraison sont significativement impactées par la température. La fonction stat_compare_means du package ggpubr permet de rajouter un test de comparaison de moyennes (ici non paramétrique, le wilcox.test)
Créez une sous-section ## Visualisation avec tests statistiques
Ajoutez en dessous un nouveau chunk contenant :
comparisons <- list(c("12", "22"))
ggplot(data, aes(x = temperature,
y = days.to.flower,
color = genotype )) +
geom_jitter(color = "black")+
geom_boxplot(aes(fill = genotype), alpha = 0.3, size = 1) +
facet_grid(day.length~genotype) +
xlab("Temperature") +
stat_compare_means(comparisons = comparisons, label = "p.signif")Nous allons maintenant faire comme dans ce sujet de TP et positionner chacune des sous-sections dans deux onglets. Pour cela, il suffit de spécifier des options à la section supérieure # Visualisation, qui devient # Visualisation {.tabset .tabset-fade}
Compilez et inspectez le résultat.
On va expliquer le nombre de feuilles d’une plante au moyen du temps qu’elle a mis a fleurir, et de la longueur des jours lors de la culture. Dans une nouvelle section, expliquez l’objectif et affichez la relation entre le nombre de feuilles et le temps jusqu’à floraison. On distingue les observations réalisées en jours courts ou en jours longs par la couleur:
ggplot(data, aes(x = days.to.flower,
y = rosette.leaf.num,
color = day.length)) + geom_point()On réalise la régression au moyen de la fonction lm, puis on extrait et on affiche en syntaxe latex de l’équation de ce modèle linéaire :
lm <- lm(data = data, rosette.leaf.num~days.to.flower*day.length)
extract_eq(lm)Compilez pour admirer le rendu de l’équation.
Vérifiez si le modèle linéaire semble correct et inter^rétable au moyen des graphes sur les résidus, puis affichez les résultats du modèle dans une table interactive :
gglm(lm)
prettify(summary(lm))Concluez sur les résultats du summary quant à l’effet du temps jusqu’à floraison et de la longueur du jour sur le nombre de feuilles (n’oubliez pas la signification du terme d’interaction).
Les données manquantes pour certaines observations et certaines fonctions génèrent des warnings lors de l’exécution du code. Pour qu’ils n’apparaissent pas dans le document, ajoutez un paramètre global dans le premier chunk spécifiant de ne pas rapporter les warnings ni les messages.
Attention, ne faire ça qu’en fin d’édition, et lorsque l’on est sûr que ces messages et warnings ne sont pas problématiques, ni des informations importantes.
Changez le theme du document dans l’entête YAML. Vous avez le choix entre les thèmes “cerulean”, “cosmo”, “flatly”, “journal”, “lumen”, “paper”, “readable”, “sandstone”, “simplex”, “spacelab”, “united”, et “yeti”, dont un aperçu est disponible ici. Le thème de la coloration syntaxique du code R dans les chunks peut également être changé avec l’option highlight.
Ajoutez une référence bibliographique pour référencer la publication relative aux données analysées. Vous pouvez procéder comme suit :
Téléchargez le fichier contenant les informations de la référence (format .bib) à cette adresse et placez le dans le folder data du projet.
Ajouter dans l’entête YAML un champs bibliography: data/biblio.bib Comme dans cet exemple:
Citez cette référence dans votre section contexte comme suit: [@Burghardt2015].
Ajoutez une dernière section # Références vide à la fin du document, car les références sont automatiquement ajoutées en fin de document Recompilez et pour vérifier que le résultat est comme attendu.
Plus de détails sur les sont disponibles ici. Ajoutez une section # Références vide à la fin du document, car les références sont automatiquement ajoutées en fin de document.
A work by Océane Cassan
oceane.cassan@cnrs.fr